var strSeperator = "/";

function DateFormat(vDateName, e) {
	//
	var k = document.all ? e.keyCode : e.which;
	if (k == 8 || k == 9 || k == 46) {
		return true;
	}

	//
	var vDateValue = vDateName.value;
	if (vDateValue.length == 2) {
		vDateName.value = vDateValue + strSeperator;
	}
	if (vDateValue.length == 3) {
		if (vDateValue.indexOf("/") < 0) {
			vDateName.value = vDateValue.substring(0, 2) + strSeperator
					+ vDateValue.substring(2, 3);
		}
	} else if (vDateValue.length == 5) {
		vDateName.value = vDateValue + strSeperator;
	}
	if (vDateValue.length == 6) {
		if (vDateValue.lastIndexOf("/") < 5) {
			vDateName.value = vDateValue.substring(0, 5) + strSeperator
					+ vDateValue.substring(5, 6);
		}
	} else if (vDateValue.length == 10) {
		invalidFormatDt(vDateName);
	}
}

function doCheckDt(isDate) {
	isDate = isDate.replace(/\//g, "");
	isDate = isDate.replace(/:/g, '');
	isDate = isDate.replace(/ /g, '');
	var day = isDate.substring(0, 2);
	var month = isDate.substring(2, 4);
	var year = isDate.substring(4, 8);

	if (month < 1 || month > 12) {
		return false;
	}

	if (day < 1 || day > 31) {
		return false;
	}

	if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31) {
		return false;
	}

	if (year == 0000)
		return false;

	if (month == 2) {
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day > 29 || (day == 29 && !isleap)) {
			return false;
		}
	}

	return true;
}

function doCheckTime(isTime) {
	var hrStr = isTime.substring(0, 2);
	var mmStr = isTime.substring(2, 4);
	var alphaCheck = "0123456789";
	for (var i = 0; i < isTime.length; i++) {
		if (alphaCheck.indexOf(isTime[i]) >= 0) {
			continue;
		}

		else {
			return false;
		}
	}

	if (hrStr < 0 || hrStr > 23) {
		return false;
	}

	if (mmStr < 0 || mmStr > 59) {
		return false;
	}

	return true;
}

function invalidFormatDt(obj) {
	if (isInValidDate(obj.value)) {
		showPopupConfirm('Ng\u00E0y th\u00E1ng nh\u1EADp v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7');

		obj.value = "";

		return;
	}
}

function isInValidDate(isDate) {
	var isInvalid = false;

	if (isDate != '') {

		isDate = isDate.replace(/\//g, "");

		isDate = isDate.replace(/:/g, '');

		isDate = isDate.replace(/ /g, '');

		if (isNaN(isDate)) {
			return true;
		}
		var len = isDate.length;
		if (len < 8) {
			isInvalid = true;
		} else {

			if (!doCheckDt(isDate.substring(0, 8))) {
				isInvalid = true;

			} else if (!doCheckTime(isDate.substring(8))) {
				isInvalid = true;
			}
		}
	}

	return isInvalid;
}

function loadNewQuanHuyen(namespace, urlQuanHuyen, quanHuyenIdOld, tinhId,
		quanHuyenId, phuongXaId) {
	console.log('new loadQuanHuyen:' + tinhId + ' ' + quanHuyenId + ' '
			+ phuongXaId);
	
	var tinhId = $("#" + namespace + "" + tinhId).val();
	var tinhIdSelected = namespace + "" + tinhIdSelected;
	var quanHuyenIdNameSpace = '#' + namespace + "" + quanHuyenId;
	var phuongXaIdNameSpace = '#' + namespace + "" + phuongXaId;

	urlQuanHuyen = urlQuanHuyen.replace(/%7B0%7D/g, function() {
		return tinhId;
	});
	jQuery.ajax({
		url : urlQuanHuyen,
		dataType : 'json',
		type : "POST",
		cache : false,
		timeout : 10000,
		async : false,
		success : function(data) {
			$(quanHuyenIdNameSpace + ' option :not(:first)').remove();
			$(phuongXaIdNameSpace + ' option :not(:first)').remove();
			if (data.length > 0) {

				$.each(data, function(index, item) {
					$(quanHuyenIdNameSpace).append($("<option/>", {
						value : item.quanHuyenId,
						text : item.tenQuanHuyen
					}));
				});

				$(quanHuyenIdNameSpace).find("option").each(function() {
					if ($(this).val() == quanHuyenIdOld) {
						$(this).attr("selected", "selected");
					}
				});
			}
		},
		error : function(xhr, textStatus, errorThrown) {
			alert(textStatus);
		}
	});
}

function loadNewPhuongXa(namespace, urlPhuongXa, phuongXaIdOld, tinhId,
		quanHuyenId, phuongXaId) {
	console.log('new loadPhuongXa:' + tinhId + ' ' + quanHuyenId + ' '
			+ phuongXaId);
	var quanHuyenId = $("#" + namespace + "" + quanHuyenId).val();
	var tinhId = $("#" + namespace + "" + tinhId).val();
	var phuongXaIdNameSpace = '#' + namespace + "" + phuongXaId;
	urlPhuongXa = urlPhuongXa.replace(/%7B(\d+)%7D/g, function() {
		return quanHuyenId;
	});
	jQuery.ajax({
		url : urlPhuongXa,
		dataType : 'json',
		type : "POST",
		cache : false,
		timeout : 10000,
		async : false,
		success : function(data) {
			$(phuongXaIdNameSpace + ' option :not(:first)').remove();
			if (data.length > 0) {

				$.each(data, function(index, item) {
					$(phuongXaIdNameSpace).append($("<option/>", {
						value : item.phuongXaId,
						text : item.tenPhuongXa
					}));
				});

				$(phuongXaIdNameSpace).find("option").each(function() {
					if ($(this).val() == phuongXaIdOld) {
						$(this).attr("selected", "selected");
					}
				});
			}
		},
		error : function(xhr, textStatus, errorThrown) {
			alert(textStatus);
		}
	});
}

function loadCoQuan(namespace, urlCoQuan, coQuanIdOld) {
	var coQuanIdNameSpace = '#' + namespace + 'coQuanId';
	var quanHuyenId = $("#" + namespace + "quanHuyenId").val();
	var tinhId = $("#" + namespace + "tinhId").val();
	var phuongXaId = $("#" + namespace + "phuongXaId").val();

	urlCoQuan = urlCoQuan.replace(/%7B0%7D/g, function() {
		return tinhId;
	});
	urlCoQuan = urlCoQuan.replace(/%7B1%7D/g, function() {
		return quanHuyenId;
	});
	urlCoQuan = urlCoQuan.replace(/%7B2%7D/g, function() {
		return phuongXaId;
	});
	jQuery.ajax({
		url : urlCoQuan,
		dataType : 'json',
		type : "POST",
		cache : false,
		timeout : 10000,
		async : false,
		success : function(data) {
			$(coQuanIdNameSpace + ' option :not(:first)').remove();

			if (data.length > 0) {

				$.each(data, function(index, item) {
					$(coQuanIdNameSpace).append($("<option/>", {
						value : item.coQuanId,
						text : item.tenCoQuan
					}));
				});
				$(coQuanIdNameSpace).find("option").each(function() {
					if ($(this).val() == coQuanIdOld) {
						$(this).attr("selected", "selected");
					}
				});
			}
		},
		error : function(xhr, textStatus, errorThrown) {
			alert(textStatus);
		}
	});
}

function loadQuanHuyen(namespace, urlQuanHuyen, quanHuyenIdOld) {
	console.log('loadQuanHuyen:' + quanHuyenIdOld);
	var tinhId = $("#" + namespace + "tinhId").val();
	var tinhIdSelected = namespace + 'tinhIdSelected';
	var quanHuyenIdNameSpace = '#' + namespace + 'quanHuyenId';
	var phuongXaIdNameSpace = '#' + namespace + 'phuongXaId';
	urlQuanHuyen = urlQuanHuyen.replace(/%7B0%7D/g, function() {
		return tinhId;
	});
	jQuery.ajax({
		url : urlQuanHuyen,
		dataType : 'json',
		type : "POST",
		cache : false,
		timeout : 10000,
		async : false,
		success : function(data) {

			$(quanHuyenIdNameSpace + ' option :not(:first)').remove();
			$(phuongXaIdNameSpace + ' option :not(:first)').remove();

			if (data.length > 0) {

				$.each(data, function(index, item) {
					$(quanHuyenIdNameSpace).append($("<option/>", {
						value : item.quanHuyenId,
						text : item.tenQuanHuyen
					}));
				});

				$(quanHuyenIdNameSpace).find("option").each(function() {
					if ($(this).val() == quanHuyenIdOld) {
						$(this).attr("selected", "selected");
					}
				});
			}
		},
		error : function(xhr, textStatus, errorThrown) {
			alert(textStatus);
		}
	});
}

function loadPhuongXa(namespace, urlPhuongXa, phuongXaIdOld) {
	console.log('loadPhuongXa:' + phuongXaIdOld);
	var quanHuyenId = $("#" + namespace + "quanHuyenId").val();
	var tinhId = $("#" + namespace + "tinhId").val();
	var phuongXaIdNameSpace = '#' + namespace + 'phuongXaId';

	urlPhuongXa = urlPhuongXa.replace(/%7B(\d+)%7D/g, function() {
		return quanHuyenId;
	});
	jQuery.ajax({
		url : urlPhuongXa,
		dataType : 'json',
		type : "POST",
		cache : false,
		timeout : 10000,
		async : false,
		success : function(data) {
			$(phuongXaIdNameSpace + ' option :not(:first)').remove();
			if (data.length > 0) {

				$.each(data, function(index, item) {
					$(phuongXaIdNameSpace).append($("<option/>", {
						value : item.phuongXaId,
						text : item.tenPhuongXa
					}));
				});

				$(phuongXaIdNameSpace).find("option").each(function() {
					if ($(this).val() == phuongXaIdOld) {
						$(this).attr("selected", "selected");
					}
				});
			}
		},
		error : function(xhr, textStatus, errorThrown) {
			alert(textStatus);
		}
	});
}

function loadCoQuan(namespace, urlCoQuan, coQuanIdOld) {
	var coQuanIdNameSpace = '#' + namespace + 'coQuanId';
	var quanHuyenId = $("#" + namespace + "quanHuyenId").val();
	var tinhId = $("#" + namespace + "tinhId").val();
	var phuongXaId = $("#" + namespace + "phuongXaId").val();

	urlCoQuan = urlCoQuan.replace(/%7B0%7D/g, function() {
		return tinhId;
	});
	urlCoQuan = urlCoQuan.replace(/%7B1%7D/g, function() {
		return quanHuyenId;
	});
	urlCoQuan = urlCoQuan.replace(/%7B2%7D/g, function() {
		return phuongXaId;
	});
	jQuery.ajax({
		url : urlCoQuan,
		dataType : 'json',
		type : "POST",
		cache : false,
		timeout : 10000,
		async : false,
		success : function(data) {
			$(coQuanIdNameSpace + ' option :not(:first)').remove();

			if (data.length > 0) {

				$.each(data, function(index, item) {
					$(coQuanIdNameSpace).append($("<option/>", {
						value : item.coQuanId,
						text : item.tenCoQuan
					}));
				});
				$(coQuanIdNameSpace).find("option").each(function() {
					if ($(this).val() == coQuanIdOld) {
						$(this).attr("selected", "selected");
					}
				});
			}
		},
		error : function(xhr, textStatus, errorThrown) {
			alert(textStatus);
		}
	});
}


function loadQuanHuyenVaCoQuan(namespace, urlQuanHuyen, quanHuyenIdOld,
		urlCoQuan, coQuanIdOld) {
	loadQuanHuyen(namespace, urlQuanHuyen, quanHuyenIdOld);
	loadCoQuan(namespace, urlCoQuan, coQuanIdOld);
}
function loadPhuongXaVaCoQuan(namespace, urlPhuongXa, phuongXaIdOld, urlCoQuan,
		coQuanIdOld) {
	loadPhuongXa(namespace, urlPhuongXa, phuongXaIdOld);
	loadCoQuan(namespace, urlCoQuan, coQuanIdOld);
}

var ChonChucNang = (function() {
	function ChonChucNang() {
	}
	/*
	 * 
	 */
	ChonChucNang.prototype.initNavigation = function(arg) {
		$("#" + arg.target + " li").each(
				function(i) {
					var li = $(this);
					var id = li.attr("id");
					if (arg.navigations[id] == arg.selected) {
						li.addClass("active");
					}
					var requestURL = arg.chucNangURL.replace(/%7B0%7D/g,
							function() {
								return arg.paths[id]+'.jsp';
							});

					li.click(function() {
						window.location.assign(requestURL);
					});
				});
	};
	/*
	 * 
	 */
	return ChonChucNang;
})();
function checkDate(dateString){
	// regular expression to match required date format 
	var re = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/; 
	if(dateString != '') {
		if(regs = dateString.match(re)) { 
			// day value between 1 and 31 
			if(regs[1] < 1 || regs[1] > 31) { 
				alert("Ngày " + regs[1] +" là không hợp lệ. Vui lòng kiểm tra lại"); 
				return false; 
			} 
			// month value between 1 and 12 
			if(regs[2] < 1 || regs[2] > 12) { 
				alert("Tháng " + regs[2] +" là không hợp lệ. Vui lòng kiểm tra lại"); 
				return false; 
			} 
			// year value between 1902 and 2015 
			if(regs[3] < 1902 || regs[3] > (new Date()).getFullYear()) { 
				alert("Năm " + regs[3] + "là không hợp lệ. Nó phải nằm trong khoảng từ  1902 đến " + (new Date()).getFullYear()); 
				form.startdate.focus(); return false; 
			} 
		} else { 
			alert("Ngày không đúng định dạng. Nó phải là ngày/tháng/năm"); 
			form.startdate.focus(); 
			return false; 
		} 
		return true;
	}else{
		alert("Vui lòng nhập vào ngày."); 
		return false;
	}
	
}
function validateEmail(email) {
	console.log('validateEmail:' + email);
    var re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
    return re.test(email);
}